home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-04d.zip / 04d / CHIP / Porady / Skuteczne wymazywanie danych / Eraser 5.82 / eraser582setup.exe / {app} / Examples / Delphi / eraserdll.pas < prev    next >
Pascal/Delphi Source File  |  2002-12-08  |  9KB  |  219 lines

  1. unit eraserdll;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Variants,
  5.   StdCtrls, menus, extctrls, buttons, clipbrd;
  6. const
  7.   diskClusterTips = 64;
  8.   diskDirEntries = 128;
  9.   diskFreeSpace = 32;
  10.   ERASER_ERROR = -1;
  11.   ERASER_ERROR_CONTEXT = -11;
  12.   ERASER_ERROR_DENIED = -15;
  13.   ERASER_ERROR_EXCEPTION = -10;
  14.   ERASER_ERROR_INIT = -12;
  15.   ERASER_ERROR_MEMORY = -8;
  16.   ERASER_ERROR_NOTIMPLEMENTED = -32;
  17.   ERASER_ERROR_NOTRUNNING = -14;
  18.   ERASER_ERROR_PARAM1 = -2;
  19.   ERASER_ERROR_PARAM2 = -3;
  20.   ERASER_ERROR_PARAM3 = -4;
  21.   ERASER_ERROR_PARAM4 = -5;
  22.   ERASER_ERROR_PARAM5 = -6;
  23.   ERASER_ERROR_PARAM6 = -7;
  24.   ERASER_ERROR_RUNNING = -13;
  25.   ERASER_ERROR_THREAD = -9;
  26.   ERASER_OK = 0;
  27.   ERASER_REMOVE_FOLDERONLY = 0;
  28.   ERASER_REMOVE_RECURSIVELY = 1;
  29.   ERASER_TEST_PAUSED = 3;
  30.   ERASER_WIPE_BEGIN = 0;
  31.   ERASER_WIPE_DONE = 2;
  32.   ERASER_WIPE_UPDATE = 1;
  33.   eraserDispInit = 64;
  34.   eraserDispItem = 32;
  35.   eraserDispMessage = 4;
  36.   eraserDispPass = 1;
  37.   eraserDispProgress = 8;
  38.   eraserDispReserved = 128;
  39.   eraserDispStop = 16;
  40.   eraserDispTime = 2;
  41.   fileAlternateStreams = 4;
  42.   fileClusterTips = 1;
  43.   fileNames = 2;
  44. type
  45.   ERASER_DATA_TYPE = (ERASER_DATA_DRIVES, ERASER_DATA_FILES);
  46.   ERASER_METHOD = (ERASER_METHOD_LIBRARY, ERASER_METHOD_GUTMANN, ERASER_METHOD_DOD,
  47.     ERASER_METHOD_PSEUDORANDOM);
  48.   ERASER_OPTIONS_PAGE = (ERASER_PAGE_DRIVE, ERASER_PAGE_FILES);
  49.  
  50. // Library initialization
  51.  
  52. // initializes the library, must be called before using
  53. function eraserInit: Integer; stdcall; external 'eraser.dll';
  54. //cleans up after use
  55. function eraserEnd: Integer; stdcall; external 'eraser.dll';
  56.  
  57.  
  58. //Context creation and destruction
  59.  
  60. //creates context with predefined settings
  61. function eraserCreateContext(var Context: Integer): Integer; stdcall; external 'eraser.dll';
  62. //creates context and sets an alternative method, pass count and items to erase
  63. function eraserCreateContextEx(var Context: Integer; Method: Integer; Passes: Integer; Items: Byte): Integer; stdcall; external 'eraser.dll';
  64. //destroys a context
  65. function eraserDestroyContext(Context: Integer): Integer; stdcall; external 'eraser.dll';
  66. //checks the validity of a context, return ERASER_OK if valid
  67. function eraserIsValidContext(Context: Integer): Integer; stdcall; external 'eraser.dll';
  68.  
  69.  
  70. //Data type
  71.  
  72. //sets context data type
  73. function eraserSetDataType(Context: Integer;  DataType: ERASER_DATA_TYPE): Integer; stdcall; external 'eraser.dll';
  74. //returns context data type
  75. function eraserGetDataType(Context: Integer; var DataType: ERASER_DATA_TYPE): Integer; stdcall; external 'eraser.dll';
  76.  
  77.  
  78. //Data
  79.  
  80. //adds item to the context data array
  81. function eraserAddItem( Context: Integer; const FileName:pchar; const NameLength: Integer ): Integer; stdcall; external 'eraser.dll';
  82. //clears the context data array
  83. function eraserClearItems(Context: Integer): Integer; stdcall; external 'eraser.dll';
  84.  
  85.  
  86. //Notification
  87.  
  88. //sets the window to notify
  89. function eraserSetWindow(var Context: Integer; xHwnd: Integer): Integer; stdcall; external 'eraser.dll';
  90. //returns the window
  91. function eraserGetWindow(var Context: Integer; xHwnd: Integer): Integer; stdcall; external 'eraser.dll';
  92. //sets the window message
  93. function eraserSetWindowMessage(var Context: Integer; Message: Integer): Integer; stdcall; external 'eraser.dll';
  94. //returns the window message
  95. function eraserGetWindowMessage(var Context: Integer; Message: Integer): Integer; stdcall; external 'eraser.dll';
  96.  
  97.  
  98. //Statistics
  99.  
  100. //returns the erased area
  101. function eraserStatGetArea(Context: Integer; var Bytes: Longint): Integer; stdcall; external 'eraser.dll';
  102. //returns the erased cluster tip area
  103. function eraserStatGetTips(Context: Integer; var Bytes: Longint): Integer; stdcall; external 'eraser.dll';
  104. //returns the amount of data written
  105. function eraserStatGetWiped(Context: Integer; var Bytes: Longint): Integer; stdcall; external 'eraser.dll';
  106. //returns the time used (ms)
  107. function eraserStatGetTime(Context: Integer; MilliSeconds: Integer): Integer; stdcall; external 'eraser.dll';
  108.  
  109.  
  110. //Display
  111.  
  112. //returns what the UI should show (see above for flag descriptions)
  113. function eraserDispFlags(var Context: Integer; Flags: Byte): Integer; stdcall; external 'eraser.dll';
  114.  
  115.  
  116. //Progress information
  117.  
  118. //returns an estimate of how Integer the operation takes to complete
  119. function eraserProgGetTimeLeft(var Context: Integer; Seconds: Integer): Integer; stdcall; external 'eraser.dll';
  120. //returns the completion percent of current item
  121. function eraserProgGetPercent(var Context: Integer; Percent: Byte): Integer; stdcall; external 'eraser.dll';
  122. //returns the completion percent of the operation
  123. function eraserProgGetTotalPercent(var Context: Integer; Percent: Byte): Integer; stdcall; external 'eraser.dll';
  124. //returns the index of the current overwriting pass
  125. function eraserProgGetCurrentPass(var Context: Integer; Pass: Integer): Integer; stdcall; external 'eraser.dll';
  126. //returns the amount of passes
  127. function eraserProgGetPasses(var Context: Integer; Passes: Integer): Integer; stdcall; external 'eraser.dll';
  128. //returns a message UI can to show to the user telling what is going on
  129. function eraserProgGetMessage(var Context: Integer; Message: Pchar; Length: Integer): Integer; stdcall; external 'eraser.dll';
  130. //returns the name of the item that is being processed
  131. function eraserProgGetCurrentDataPchar(var Context: Integer; Data: Pchar; Length: Integer): Integer; stdcall; external 'eraser.dll';
  132.  
  133. //Control
  134.  
  135. //starts overwriting in a new thread
  136. function eraserStart(Context: Integer): Integer; stdcall; external 'eraser.dll';
  137. //starts overwriting
  138. function eraserStartSync(Context: Integer): Integer; stdcall; external 'eraser.dll';
  139. //stops running task
  140. function eraserStop(Context: Integer): Integer; stdcall; external 'eraser.dll';
  141. //checks whether task is being processed
  142. function eraserIsRunning(var Context: Integer; Running: Byte): Integer; stdcall; external 'eraser.dll';
  143.  
  144.  
  145. //Result
  146.  
  147. //checks whether the task was completed successfully
  148. function eraserCompleted(var Context: Integer; Completed: Byte): Integer; stdcall; external 'eraser.dll';
  149. //checks whether the task failed
  150. function eraserFailed(var Context: Integer; Failed: Byte): Integer; stdcall; external 'eraser.dll';
  151. //checks whether the task was terminated
  152. function eraserTerminated(var Context: Integer; Terminated: Byte): Integer; stdcall; external 'eraser.dll';
  153. //returns the amount of error messages in the context array
  154. function eraserErrorPcharCount(var Context: Integer; Count: Integer): Integer; stdcall; external 'eraser.dll';
  155. //retrieves the given error message from the array
  156. function eraserErrorPchar(var Context: Integer; Index: Integer; Error: Pchar; Length: Integer): Integer; stdcall; external 'eraser.dll';
  157. //returns the amount of failed items in the context array
  158. function eraserFailedCount(var Context: Integer; Count: Integer): Integer; stdcall; external 'eraser.dll';
  159. //retrieves the given failed item from the array
  160. function eraserFailedPchar(var Context: Integer; Index: Integer; Error: Pchar; Length: Integer): Integer; stdcall; external 'eraser.dll';
  161.  
  162.  
  163. //Display report
  164.  
  165. //displays erasing report
  166. function eraserShowReport(Context: Integer; const xHwnd: Hwnd): Integer; stdcall; external 'eraser.dll';
  167.  
  168.  
  169. //Display library options
  170.  
  171. //displays the options window
  172. function eraserShowOptions(xHwnd: Integer; OptionsPage: Integer): Integer; stdcall; external 'eraser.dll';
  173.  
  174.  
  175. //File / directory deletion
  176.  
  177. //removes a file
  178. function eraserRemoveFile(FileName: Pchar; NameLength: Integer): Integer; stdcall; external 'eraser.dll';
  179. //removes a folder
  180. function eraserRemoveFolder(FolderName: Pchar; NameLength: Integer; RemoveType: Byte): Integer; stdcall; external 'eraser.dll';
  181.  
  182.  
  183. //Helpers
  184.  
  185. //returns the amount of free disk space on a drive
  186. function eraserGetFreeDiskSpace(Drive: Pchar; NameLength: Integer; FreeBytes: Integer): Integer; stdcall; external 'eraser.dll';
  187.  
  188. //returns the cluster size of a partition
  189. function eraserGetClusterSize(Drive: Pchar; NameLength: Integer; ClusterSize: Integer): Integer; stdcall; external 'eraser.dll';
  190.  
  191.  
  192. //Test mode
  193.  
  194. //enables test mode --> files will be opened with sharing enabled
  195. //and erasing process will be paused after each overwriting pass
  196. //until eraserTestContinueProcess(...) is called for the handle
  197. function eraserTestEnable(var Context: Integer): Integer; stdcall; external 'eraser.dll';
  198.  
  199. //continues paused erasing process in test mode
  200. function eraserTestContinueProcess(var Context: Integer): Integer; stdcall; external 'eraser.dll';
  201.  
  202.    // Global or Public procs
  203. function eraserOK(ReturnValue: Integer): boolean;
  204. function eraserError(ReturnValue: Integer): boolean;
  205. implementation
  206.  
  207. function eraserOK(ReturnValue: Integer): boolean;
  208. begin
  209.   eraserOK := (ReturnValue >= ERASER_OK);
  210. end;
  211.  
  212. function eraserError(ReturnValue: Integer): boolean;
  213. begin
  214.   eraserError := (ReturnValue < ERASER_OK);
  215. end;
  216.  
  217. end.
  218.  
  219.